﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ModelUML
{
    [Serializable]
    public class AtrybutUML : ElementUML
    {
        public override List<string> Validate()
        {
            List<String> lista = new List<string>();           
            if (Nazwa.Length == 0) lista.Add("atrybut nie ma nazway");
            else
            {                     
                foreach (char c in Nazwa)
                {
                    if (!char.IsLetterOrDigit(c) && !c.Equals('_'))
                    {
                        lista.Add(String.Format("atrybut \"{0}\" posiada nieprawidłowe znaki w nazwie", Nazwa));
                        break;
                    }
                }
            }
            if (this.Typ != null)
            {
                bool found = false;
                foreach (ElementUML el in Model1.staticModel.Elementy)
                {
                    if (el.JestTypemDanych)
                    {
                        if (this.Typ.Nazwa.Equals(el.Nazwa))
                        {
                            found = true;
                            break;
                        }
                    }
                }
                if (!found) lista.Add(String.Format("atrybut \"{0}\" jest nieznanego typu \"{1}\"", Nazwa, Typ.Nazwa));
            }
            return lista;
        }
        public AtrybutUML(String nazwa, TypDanychUML typ)
        {
            this.typ = typ;
            this.Nazwa = nazwa;
        }
        TypDanychUML typ;
        public TypDanychUML Typ
        {
            get
            {
                return typ;
            }
            set
            {
                typ = value;
            }
        }
    }
}
